<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>04JS运算符</title>
</head>
<body>
<script>
    //除法会根据实际情况显示运算结果
    console.log(3/2);
    console.log(6/2);
    console.log("*******************************");

    //如果比较运算符左右两边有数字，会转为数字在进行比较
    console.log(3>10); //false
    console.log(3>'10'); //'10'会转为数字10，在进行比较，false
    console.log('3'>10); //false
    //如果比较运算符左右两边都是字符串，会比较它们的编码值
    console.log('3'>'10'); //true 51>49
    console.log('悟'>'空'); //false
    /* '3'.charCodeAt() 查看字符3的编码值 */
    console.log('3'.charCodeAt()); //51
    console.log('10'.charCodeAt()); //49

    console.log("*******************************");

    //Number()将参数转为数字，如果得不到数值类型的结果，会得到NaN(Not a Number)
    console.log(Number('3'),typeof Number('3')); //3 'number'
    console.log(Number(true),typeof Number(true)); //1 'number'
    console.log(Number(false),typeof Number(false)); //0 'number'
    console.log(Number('你好'),typeof Number('你好')); //NaN 'number'
    console.log("*******************************");

    let a = 1;
    let b = true;
    //松散比较运算符，只比较值，Number(true)=1
    console.log(a == b); //true
    //严格比较运算符，先比较类型，在比较值 number ≠ boolean
    console.log(a === b); //false
    console.log("*******************************");

    //Boolean()将参数转为布尔类型的值
    //如果参数是0 空字符串 null undefined NaN 都会转为fales
    console.log(Boolean(0));
    console.log(Boolean(''));
    console.log(Boolean(null));
    console.log(Boolean(undefined));
    console.log(Boolean(NaN));
    console.log(Boolean(' '));
    console.log(Boolean('下午好！'));
    console.log("*******************************");

    //三元运算符
    let c = 0;
    console.log(c == 0 ? 'YES' : 'NO'); //YES
    //=是赋值符号，给c赋值为0，Boolean(0)=false，所以取'NO'
    console.log(c = 0 ? 'YES' : 'NO'); //NO

</script>
</body>
</html>